#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/ioctl.h>

#define CMD_TEST0 _IO('L', 0)
#define CMD_TEST1 _IOW('L', 1, int)
#define CMD_TEST2 _IOR('L', 2, int)


int fd;    unsigned
char buf[16];

int main(int argc, char *argv[])
{
    int ret;  
    int recv_cnt;
    int read_data;

    if (argc < 2)
    {
        printf("%d\r\n", argc);

        printf("plase input paraments\r\n");
        return -1;
    }

    // 以非阻塞方式打开设备
    fd = open(argv[1], O_RDWR , 0666);
    if (fd < 0)
    {
        printf(" open %s is error: %s\r\n", argv[1], strerror(errno));
        return -1;
    }
    printf("open %s is ok\r\n", argv[1]);

    if (argc > 2)
    { 
        if (! strcmp(argv[2], "read"))
        {

            ioctl(fd, CMD_TEST2, &read_data);
            printf("val = %d \n", read_data);

            // recv_cnt = read(fd, buf, sizeof(buf));
            // if (recv_cnt < 0)
            // {
            //     printf(" read %d is error: %s\r\n", fd, strerror(errno));
            //     return -1;
            // }
            // printf("read[%d] : %s\n", sizeof(buf), buf);
        } else if (! strcmp(argv[2], "write"))
        {
            ioctl(fd, CMD_TEST1, 1);

            // if (argc > 3)
            // {
            //     write(fd, argv[3], strlen(argv[3]));
            // }
            // else {
            //     write(fd, "nihao!!", sizeof("nihao!!"));
            // }
            
        }
    }

    close(fd);

    return 0;
}
